package com.ovidiojf.vendas.venda;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import com.ovidiojf.vendas.cliente.Cliente;
import com.ovidiojf.vendas.cliente.ClienteRN;
import com.ovidiojf.vendas.produto.Produto;
import com.ovidiojf.vendas.produto.ProdutoRN;

@ManagedBean(name = "vendaBean")
@ViewScoped
public class VendaBean {

	private Cliente clienteSelecionado;
	private Produto produtoSelecionado = new Produto();
	private List<Produto> carrinhoCompas = new ArrayList<Produto>();
	private List<SelectItem> clientesSelect;
	private float valorTotal;

	public void buscaProduto() {

		ProdutoRN produtoRN = new ProdutoRN();
		Produto produtoPesquisado = new Produto();

		if (produtoSelecionado.getDescricao() != null
				&& produtoSelecionado.getDescricao().isEmpty()) {
			produtoPesquisado = produtoRN
					.pesquisarPorDescricao(produtoSelecionado.getDescricao());
		}

		if (produtoPesquisado != null) {
			carrinhoCompas.add(produtoPesquisado);
			calculaTotal();
		}

	}

	private void calculaTotal() {

		if (!carrinhoCompas.isEmpty())
			for (Produto p : carrinhoCompas) {
				valorTotal += p.getValor();
			}

	}

	public Cliente getClienteSelecionado() {
		return clienteSelecionado;
	}

	public void setClienteSelecionado(Cliente clienteSelecionado) {
		this.clienteSelecionado = clienteSelecionado;
	}

	public Produto getProdutoSelecionado() {
		return produtoSelecionado;
	}

	public void setProdutoSelecionado(Produto produtoSelecionado) {
		this.produtoSelecionado = produtoSelecionado;
	}

	public List<Produto> getCarrinhoCompas() {
		return carrinhoCompas;
	}

	public void setCarrinhoCompas(List<Produto> carrinhoCompas) {
		this.carrinhoCompas = carrinhoCompas;
	}

	public float getValorTotal() {
		return valorTotal;
	}

	public void setValorTotal(float valorTotal) {
		this.valorTotal = valorTotal;
	}

	public List<SelectItem> getClientesSelect() {
		
		if(clientesSelect == null) {
			
			clientesSelect = new ArrayList<SelectItem>();
			
			ClienteRN clienteRN = new ClienteRN();
			List<Cliente> lista = clienteRN.listar();
			
			if(lista != null && !lista.isEmpty()) {
				
				SelectItem item;
				
				for (Cliente cliente : lista) {
					item = new SelectItem(cliente, cliente.getNome());
					clientesSelect.add(item);
				}
			}
			
		}
		return clientesSelect;
	}

}
